import 'package:flutter/foundation.dart';

/// 编辑器标签页数据模型
///
/// 用于管理编辑器中的单个文件标签页信息，包括：
/// - 文件名、路径信息
/// - 文本内容（可绑定到编辑器组件）
/// - 是否有未保存更改的状态
class EditorTab {
  /// 文件显示名（一般为 basename）
  final String title;

  /// 相对项目根目录的路径（用于 tooltip 展示）
  final String relativePath;

  /// 文件绝对路径（用于唯一标识/读写）
  final String fullPath;

  /// 文本内容（外部可直接传递给 `CanvasEditor.externalText`）
  final ValueNotifier<String> text;

  /// 是否有未保存更改
  final ValueNotifier<bool> dirty;

  /// 创建一个编辑器标签页
  ///
  /// - [title] 文件显示名
  /// - [relativePath] 相对项目根目录的路径
  /// - [fullPath] 文件绝对路径
  /// - [initialText] 初始文本内容
  EditorTab({
    required this.title,
    required this.relativePath,
    required this.fullPath,
    required String initialText,
  })  : text = ValueNotifier<String>(initialText),
        dirty = ValueNotifier<bool>(false);

  /// 销毁资源（释放 [ValueNotifier]）
  void dispose() {
    text.dispose();
    dirty.dispose();
  }
}
